home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / T U R B O Language / Turbo C v2.0 / MCALC.H < prev    next >
Text File  |  1988-08-29  |  8KB  |  257 lines

  1. /* Turbo C - (C) Copyright 1987, 1988 by Borland International */
  2.  
  3. #define S_IREAD     0x0100    /* from SYS\STAT.H */
  4. #define S_IWRITE 0x0080    /* from SYS\STAT.H */
  5.  
  6. #define TRUE 1
  7. #define FALSE 0
  8.  
  9. #define MSGHEADER "MICROCALC - A Turbo C Demonstration Program"
  10. #define MSGKEYPRESS "Press any key to continue."
  11. #define MSGCOMMAND "Press / for the list of commands"
  12. #define MSGMEMORY "Memory Available:"
  13. #define MSGERROR "ERROR"
  14. #define MSGLOMEM "Not enough memory to allocate cell."
  15. #define MSGEMPTY "Empty"
  16. #define MSGTEXT  "Text"
  17. #define MSGVALUE "Value"
  18. #define MSGFORMULA "Formula"
  19. #define MSGAUTOCALC "AutoCalc"
  20. #define MSGFORMDISPLAY "Form"
  21. #define MSGFILENAME "Enter the file name of the spreadsheet:"
  22. #define MSGNAME "Turbo C MicroCalc Spreadsheet"
  23. #define MSGCOLWIDTH "Enter the new column width:"
  24. #define MSGNOOPEN "Can't open the file."
  25. #define MSGOVERWRITE "The file exists.  Do you want to overwrite it?"
  26. #define MSGFILELOMEM "Not enough memory for entire spreadsheet."
  27. #define MSGNOMICROCALC "That is not a Turbo C MicroCalc spreadsheet."
  28. #define MSGNOEXIST "The file does not exist."
  29. #define MSGGOTO "Enter the cell to go to:"
  30. #define MSGBADNUMBER "You must enter a number from %d to %d."
  31. #define MSGBADCELL "That is not a legal cell."
  32. #define MSGCELL1 "Enter the first cell to format:"
  33. #define MSGCELL2 "Enter the last cell to format:"
  34. #define MSGDIFFCOLROW "The row or the column must be the same."
  35. #define MSGRIGHTJUST "Do you want the cell right-justified?"
  36. #define MSGDOLLAR "Do you want numbers in a dollar format?"
  37. #define MSGCOMMAS "Do you want commas in numbers?"
  38. #define MSGPLACES "How many decimal places should the number be rounded to?"
  39. #define MSGCOLUMNS "Do you want to print in 132 columns?"
  40. #define MSGPRINT "Enter the file name to print to, or press ENTER to print on the printer."
  41. #define MSGBORDER "Print the border?"
  42. #define MSGLOADING "Loading..."
  43. #define MSGSAVING "Saving..."
  44. #define MSGSAVESHEET "Save current spreadsheet?"
  45. #define MSGSTACKERROR "Parser stack overflow."
  46.  
  47. #define MENU "Spreadsheet, Format, Delete, Goto, Col, Row, Edit, Utility, Auto, Quit"
  48. #define COMMAND "SFDGCREUAQ"
  49. #define SMENU "Load, Save, Print, Clear"
  50. #define SCOMMAND "LSPC"
  51. #define CMENU "Insert, Delete, Width"
  52. #define CCOMMAND "IDW"
  53. #define RMENU "Insert, Delete"
  54. #define RCOMMAND "ID"
  55. #define UMENU "Recalc, Formula display"
  56. #define UCOMMAND "RF"
  57.  
  58. #define MAXCOLS 100   /* Maximum is 702 */
  59. #define MAXROWS 100
  60. #define LEFTMARGIN 3
  61. #define MINCOLWIDTH 3
  62. #define MAXCOLWIDTH 80 - LEFTMARGIN
  63. #define SCREENCOLS (80 - LEFTMARGIN) / MINCOLWIDTH + 1
  64. #define SCREENROWS 20
  65. #define DEFAULTWIDTH 10
  66. #define DEFAULTFORMAT 0X42
  67. #define MAXINPUT 79
  68. #define MAXPLACES 8
  69. #define TOPMARGIN 5
  70. #define PARSERSTACKSIZE 20
  71.  
  72. #define TEXTCOLOR WHITE
  73. #define ERRORCOLOR LIGHTRED + BLINK
  74. #define VALUECOLOR LIGHTCYAN
  75. #define FORMULACOLOR LIGHTMAGENTA
  76. #define BLANKCOLOR BLACK
  77. #define HEADERCOLOR WHITE + (RED << 4)
  78. #define HIGHLIGHTCOLOR WHITE + (BLUE << 4)
  79. #define HIGHLIGHTERRORCOLOR WHITE + (BLUE << 4) + BLINK
  80. #define MSGAUTOCALCCOLOR LIGHTCYAN
  81. #define MSGFORMDISPLAYCOLOR LIGHTMAGENTA
  82. #define MSGMEMORYCOLOR LIGHTGREEN
  83. #define MSGHEADERCOLOR LIGHTCYAN
  84. #define PROMPTCOLOR YELLOW
  85. #define COMMANDCOLOR LIGHTCYAN
  86. #define LOWCOMMANDCOLOR WHITE
  87. #define MEMORYCOLOR LIGHTRED
  88. #define CELLTYPECOLOR LIGHTGREEN
  89. #define CELLCONTENTSCOLOR YELLOW
  90.  
  91. #define HIGHLIGHT TRUE
  92. #define NOHIGHLIGHT FALSE
  93. #define UPDATE TRUE
  94. #define NOUPDATE FALSE
  95. #define FORMAT TRUE
  96. #define NOFORMAT FALSE
  97. #define LEFT 0
  98. #define RIGHT 1
  99. #define UP 2
  100. #define DOWN 3
  101. #define TEXT 0
  102. #define VALUE 1
  103. #define FORMULA 2
  104. #define COLADD 0
  105. #define COLDEL 1
  106. #define ROWADD 2
  107. #define ROWDEL 3
  108. #define OVERWRITE 0X80
  109. #define RJUSTIFY 0X40
  110. #define COMMAS 0X20
  111. #define DOLLAR 0X10
  112.  
  113. struct CELLREC
  114. {
  115.  char attrib;
  116.  union
  117.  {
  118.   char text[MAXINPUT + 1];
  119.   double value;
  120.   struct
  121.   {
  122.    double fvalue;
  123.    char formula[MAXINPUT + 1];
  124.   } f;
  125.  } v;
  126. };
  127.  
  128. typedef struct CELLREC *CELLPTR;
  129.  
  130. #if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
  131.  
  132. #define memsize coreleft() - 1000
  133. #define textcellsize(s) (((strlen(s) >> 1) + 3) << 1)
  134. #define valuecellsize 12
  135. #define formulacellsize(s) (((strlen(s) >> 1) + 7) << 1)
  136.  
  137. #else
  138.  
  139. #define memsize farcoreleft() - 1000
  140. #define textcellsize(s) (((strlen(s) >> 1) + 5) << 1)
  141. #define valuecellsize 16
  142. #define formulacellsize(s) (((strlen(s) >> 1) + 9) << 1)
  143.  
  144. #endif
  145.  
  146. #define BS 8
  147. #define FORMFEED 12
  148. #define CR 13
  149. #define ESC 27
  150. #define HOMEKEY 327
  151. #define ENDKEY 335
  152. #define UPKEY 328
  153. #define DOWNKEY 336
  154. #define PGUPKEY 329
  155. #define PGDNKEY 337
  156. #define LEFTKEY 331
  157. #define INSKEY 338
  158. #define RIGHTKEY 333
  159. #define DELKEY 339
  160. #define CTRLLEFTKEY 371
  161. #define CTRLRIGHTKEY 372
  162. #define F1 315
  163. #define F2 316
  164. #define F3 317
  165. #define F4 318
  166. #define F5 319
  167. #define F6 320
  168. #define F7 321
  169. #define F8 322
  170. #define F9 323
  171. #define F10 324
  172.  
  173. void initcursor(void);
  174. int getkey(void);
  175. int editstring(char *s, char *legal, int maxlength);
  176. int getint(int *number, int low, int high);
  177. void getinput(int c);
  178. void setcolor(int color);
  179. void scroll(int direction, int lines, int x1, int y1, int x2, int y2,
  180.             int attrib);
  181. void setcursor(unsigned int shape);
  182. void writef(int col, int row, int color, int width, va_list arg_list, ...);
  183. void printcol(void);
  184. void printrow(void);
  185. void displaycell(int col, int row, int highlighting, int updating);
  186. void displaycol(int col, int updating);
  187. void displayrow(int row, int updating);
  188. void displayscreen(int updating);
  189. void clearinput(void);
  190. void changecursor(int insmode);
  191. void showcelltype(void);
  192. void initcolortable(void);
  193. double parse(char *s, int *att);
  194. int alloctext(int col, int row, char *s);
  195. int allocvalue(int col, int row, double amt);
  196. int allocformula(int col, int row, char *s, double amt);
  197. void deletecell(int col, int row, int display);
  198. void printfreemem(void);
  199. void moverowup(void);
  200. void moverowdown(void);
  201. void movecolleft(void);
  202. void movecolright(void);
  203. void recalc(void);
  204. void changeautocalc(int newmode);
  205. void changeformdisplay(int newmode);
  206. void errormsg(char *s);
  207. void colstring(int col, char *colstr);
  208. void centercolstring(int col, char *colstr);
  209. void setleftcol(void);
  210. void setrightcol(void);
  211. void settoprow(void);
  212. void setbottomrow(void);
  213. void movehighlight(void);
  214. void setlastcol(void);
  215. void setlastrow(void);
  216. void act(char *s);
  217. void initvars(void);
  218. int getcommand(char *msgstr, char *comstr);
  219. void mainmenu(void);
  220. void editcell(CELLPTR ecell);
  221. int setoflags(int col, int row, int display);
  222. void clearoflags(int col, int row, int display);
  223. void updateoflags(int col, int row, int display);
  224. void loadsheet(char *filename);
  225. int getcell(int *col, int *row);
  226. char *cellstring(int col, int row, int *color, int formatting);
  227. void writeprompt(char *prompt);
  228. int getyesno(int *yesno, char *prompt);
  229. void swap(int *val1, int *val2);
  230. void redrawscreen(void);
  231. void checkforsave(void);
  232. void savesheet(void);
  233. int formulastart(char **input, int *col, int *row);
  234. int rowwidth(int row);
  235. void fixformula(int col, int row, int action, int place);
  236. void clearlastcol(void);
  237. void run(void);
  238. void gotocell(void);
  239.  
  240. #if !defined(MAIN)
  241.  
  242. extern CELLPTR cell[MAXCOLS][MAXROWS], curcell;
  243. extern unsigned char format[MAXCOLS][MAXROWS];
  244. extern unsigned char colwidth[MAXCOLS];
  245. extern unsigned char colstart[SCREENCOLS];
  246. extern char formdisplay;
  247. extern char changed;
  248. extern char autocalc;
  249. extern int leftcol, rightcol, toprow, bottomrow, curcol, currow, lastcol,
  250.  lastrow, direction;
  251. extern long memleft;
  252. extern char stop;
  253. extern char matherror;
  254. extern unsigned int oldcursor, shortcursor, tallcursor, nocursor;
  255.  
  256. #endif
  257.